我阅读了各种Git教程,包括官方教程,它们似乎都在告诉我用现在时编写Git提交说明是一种很好的惯例和做法。这是为什么呢?其背后的原因是什么? 最佳答案 Git是分布式VCS(版本控制系统)。多人可以从事同一个项目。它将从许多来源获得更改。而不是编写消息来说明提交者所做的事情。最好将这些消息视为在提交应用后将要完成的操作的说明。所以写这样一条消息Fixbug#1234代替Fixedbug#1234不要将git日志视为您操作的历史记录,而是所有提交所做的顺序描述。hackernews上有大帖关于它。在那里你会得到更多支持这个约定的原因。
在类似的话题中Validateifcommitexists他们推荐:gitrev-listHEAD..$sha如果它退出时没有错误代码,则表明存在提交。但仅用于验证是否足够有效?我在考虑这个选项:gitcat-filecommit$sha它适合我的任务吗?还有其他想法吗? 最佳答案 您可以只运行gitcat-file-t$sha并检查它是否返回“commit”。你是对的,你不需要为此实际打印实际对象......不过,我不能100%确定幕后发生的事情是否更有效率。测试$(gitcat-file-t$sha)==commit
在类似的话题中Validateifcommitexists他们推荐:gitrev-listHEAD..$sha如果它退出时没有错误代码,则表明存在提交。但仅用于验证是否足够有效?我在考虑这个选项:gitcat-filecommit$sha它适合我的任务吗?还有其他想法吗? 最佳答案 您可以只运行gitcat-file-t$sha并检查它是否返回“commit”。你是对的,你不需要为此实际打印实际对象......不过,我不能100%确定幕后发生的事情是否更有效率。测试$(gitcat-file-t$sha)==commit
我有一个未跟踪的文件,它没有出现在gitdiff中,当我将它添加到“待提交的更改”区域时,它仍然没有出现在gitdiff中。当我对HEAD进行比较时,我出现了gitstatus-v。我对git还是很陌生,所以谁能告诉我文件是否会被提交,即使它没有出现在常规diff中,因为它已被添加到暂存区? 最佳答案 如果你想在diff中看到staged变化,你仍然可以使用gitdiff,你只需要传递--staged标志:david@pav:~/dummy_repo$echo"Hello,world">hello.txtdavid@pav:~/du
我有一个未跟踪的文件,它没有出现在gitdiff中,当我将它添加到“待提交的更改”区域时,它仍然没有出现在gitdiff中。当我对HEAD进行比较时,我出现了gitstatus-v。我对git还是很陌生,所以谁能告诉我文件是否会被提交,即使它没有出现在常规diff中,因为它已被添加到暂存区? 最佳答案 如果你想在diff中看到staged变化,你仍然可以使用gitdiff,你只需要传递--staged标志:david@pav:~/dummy_repo$echo"Hello,world">hello.txtdavid@pav:~/du
有没有办法用gpg签署git提交?使用标签非常简单(使用-s而不是-a),似乎提交也有类似的功能。 最佳答案 注意:始终添加-S选项可能很麻烦。在git2.0及更高版本中,您可以添加一个配置来为您处理该选项。参见commit2af2ef3通过NicolasVigier(boklm):添加commit.gpgsign选项来签署所有提交IfyouwanttoGPGsignallyourcommits,youhavetoaddthe-Soptionallthetime.Thecommit.gpgsignconfigoptionallows
有没有办法用gpg签署git提交?使用标签非常简单(使用-s而不是-a),似乎提交也有类似的功能。 最佳答案 注意:始终添加-S选项可能很麻烦。在git2.0及更高版本中,您可以添加一个配置来为您处理该选项。参见commit2af2ef3通过NicolasVigier(boklm):添加commit.gpgsign选项来签署所有提交IfyouwanttoGPGsignallyourcommits,youhavetoaddthe-Soptionallthetime.Thecommit.gpgsignconfigoptionallows
我做了三个提交,我试图清理一些代码。无论如何,我设法完全摧毁了我正在做的事情。我想删除过去的三个提交并返回到特定的提交SHA1。如何恢复到之前的提交并删除这3次提交的历史记录?(历史删除部分没什么大不了的)。这些提交已经推送,所以我有点迷茫。谢谢! 最佳答案 找到您要重置为的提交:gitlog一旦你有了哈希:gitreset--hard然后推送到Remote上:gitpush-f 关于Git重置为之前的提交,我们在StackOverflow上找到一个类似的问题:
我做了三个提交,我试图清理一些代码。无论如何,我设法完全摧毁了我正在做的事情。我想删除过去的三个提交并返回到特定的提交SHA1。如何恢复到之前的提交并删除这3次提交的历史记录?(历史删除部分没什么大不了的)。这些提交已经推送,所以我有点迷茫。谢谢! 最佳答案 找到您要重置为的提交:gitlog一旦你有了哈希:gitreset--hard然后推送到Remote上:gitpush-f 关于Git重置为之前的提交,我们在StackOverflow上找到一个类似的问题:
我的历史是这样的:*3830e61Adddataescaping.(Bad)*0f5e148Improvefunctionforgettingpagetemplate.*aaf8dc5Mergebranch'navigation'|\|*3e667f8Addicons.|*43a07b1Addmenustyles.(Breaks)|*107ca95AddResponsiveNav.(Good)*|ea3d736Add‘Admin’notice.*|17ca0bbUpdateplaceholdertext.|/*f52cc34Addfeaturedimage.*2abd954Stylep